[C] Criptografia por Inversão de bits
Publicado por Enzo de Brito Ferber 04/03/2006
[ Hits: 13.214 ]
Homepage: http://www.maximasonorizacao.com.br
Programa de criptografia simples que
usa o operador ~(complemento de 1).
O operador ~ faz o seguinte:
01000001 ~
10111110
Todos os bits 0 passam a ser 1, e
todos os 1 passam a ser 0. O
programa criptografa um arquivo
inteiro, não uma só palavra.
#include <stdio.h> #include <stdlib.h> char encode(char ch){ return(~ch); } int set(){ system("clear"); } int abrirArquivo(char caminho[]){ FILE *arqEntrada; FILE *arqSaida; char *textoEntrada; char *textoSaida; char ch; int i=2; //para poder ser usado para alocação dinamica if((arqEntrada = fopen(caminho, "r")) == 0){ printf("Impossivel abrir o arquivo...\n"); printf("Pressione ENTER para continuar...\n"); __fpurge(stdin); ch = getchar(); main(); exit(1); } if((arqSaida = fopen("texto_criptografado.txt", "w")) == 0){ printf("Impossivel abrir o arquivo...\n"); printf("Pressione ENTER para continuar...\n"); __fpurge(stdin); ch = getchar(); main(); } printf("Realizando criptografia...\n"); while(!feof(arqEntrada)){ if((textoEntrada = (char *)calloc(i, sizeof(char)))== 0){ printf("Memoria insuficiente...\n"); exit(1); } if((textoSaida = (char *)calloc(i, sizeof(char)))== 0){ printf("Memoria insuficiente...\n"); exit(1); } fscanf(arqEntrada, "%c", &textoEntrada[i-2]); if(textoEntrada[i-2] == '{FONTE}') break; textoSaida[i-2] = encode(textoEntrada[i-2]); fprintf(arqSaida, "%c", textoSaida[i-2]); i++; } printf("Criptografia do arquivo realizada com sucesso...\n\n\n"); fclose(arqEntrada); fclose(arqSaida); free(textoEntrada); free(textoSaida); system("cat texto_criptografado.txt"); __fpurge(stdin); printf("\n\nPressione ENTER para continuar..."); ch = getchar(); } int main(void){ char caminho[100]; LOOP: set(); printf("\t\t* * * * * CRIPTOGRAFIA DE ARQUIVO * * * * *\n\n\n"); printf("Arquivo: "); __fpurge(stdin); scanf("%[^\n]", caminho); abrirArquivo(caminho); goto LOOP; }
Captura de Banners dos Serviços
intdb - gerador de wordlist numerica
Esse código pode ser considerado um vírus?
Cálculo da chave secreta do protocolo Diffie-Hellmann
IA local no bolso, novo visual no Raspberry Pi OS e mais destaques do software livre
Kernel turbinado, compatibilidade em alta e debate sobre sustentabilidade: o dia no mundo Linux
Kernel turbinado e GNOME 49 dominam o giro do dia no mundo Linux
Novidades Linux: Kernel 6.17, distros em ebulição e segurança em foco
Kernel ganha novos linters Rust e distros avançam com recursos de IA
Adicionando o repositório backports no Debian 13 Trixie
Como definir um IP estático no Linux Debian
SAMBA parou de compartilhar (2)
Orientação para instalar o Warsaw - módulo de proteção do Banco do Bra... (8)
systemd-resol... precisa ser reiniciado periodicamente (5)
Alguém que utilize o Warsaw do BB no Ubuntu 24.04 [RESOLVIDO] (6)
Fedora não reconhece James Donkey 102 Wireless Gaming Mouse (2)